home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / fractal / kaos.lha / complib / polar_to_euclid.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-11-18  |  934 b   |  42 lines

  1. /*
  2. ### from secondary to primary coordiantes ###
  3. */
  4.  
  5. polar_to_euclid(v_euc,v_pol)
  6. double v_euc[],v_pol[];
  7. {
  8.     int i;
  9.     double cos(),sin(),cosp,sinp;
  10.     extern int enable_polar,var_dim;
  11.     extern char string[];
  12.  
  13.     switch(enable_polar){
  14.         case 1:
  15.             if(var_dim ==4){
  16.                 cosp=cos(v_pol[2]);
  17.                 sinp=sin(v_pol[2]);
  18.                 v_euc[0] = v_pol[0] * cosp;
  19.                 v_euc[1] = v_pol[1] * cosp - v_pol[3] * v_pol[0] * sinp;
  20.                 v_euc[2] = v_pol[0] * sinp;
  21.                 v_euc[3] = v_pol[1] * sinp + v_pol[3] * v_pol[0] * cosp;
  22.             }
  23.             else {
  24.                 for(i=0;i<var_dim-1;i += 2){
  25.                     v_euc[i] = v_pol[i] * cos(v_pol[i+1]);
  26.                     v_euc[i+1] = v_pol[i] * sin(v_pol[i+1]);
  27.                 }
  28.             }
  29.             break;
  30.         case 2:
  31.             for(i=0;i<var_dim-1;i += 2){
  32.                 v_euc[i] = v_pol[i] * cos(v_pol[i+1]);
  33.                 v_euc[i+1] = v_pol[i] * sin(v_pol[i+1]);
  34.             }
  35.             break;
  36.         default:
  37.             sprintf(string,"polar_to_euclid: coord transform for mode=%d!",enable_polar);
  38.             system_mess_proc(1,string);
  39.             break;
  40.     }
  41. }
  42.